SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TCFINA_BANC_Q02]
/*-------------------------------------------------------*/
/*---Empresa               OFISIS S.A.                --*/
/*---CLIEnte               VIRU                 --*/
/*---Sistema               Tesoreria                  --*/
/*---M®dulo                Empresa                    --*/
/*---Programa              POSICION PRE EMBARQUE     --*/
/*---Script                SP_TCFINA_BANC_Q02.sql     --*/
/*---Nombre SP             SP_TCFINA_BANC_Q02         --*/
/*---Desarrollado por      Reynaldo Menacho Luyo      --*/
/*---Fecha Creaci®n        22/06/2004                 --*/
/*---Base Datos            SQL			       --*/
/*---Versi®n               2000                       --*/
/*---Invoca a SP                                      --*/
/*-------------------------------------------------------*/

/*-------------------------------------------------------*/
/*---Modificado 1 por     :--*/ 
/*---Fecha Modificaci®n   :--*/ 
/*---Detalle Modificaci®n :--*/
/*-------------------------------------------------------*/

/*-------------------------------------------------------*/
/*---Drop Proc SP_TCFINA_BANC_Q02                      --*/
/*--- Grant execute on SP_TCFINA_BANC_Q02 to public         --*/ 
/*---	SP_TCFINA_BANC_Q02 'C', 'P', 'SOL', 'DOL', "Where 1 = 1 ", '', "2004/06/30", 'C'                            --*/
/*-------------------------------------------------------*/
@ISTI_AUXI_CLIE	TD_VC_001,
@ISTI_AUXI_PROV	TD_VC_001,
@ISCO_MONE_NACI TD_VC_003,
@ISCO_MONE_EXTR TD_VC_003,
@ISCA_WHER_0001	VARCHAR(255),
@ISCA_WHER_0002	VARCHAR(255),
@IDFE_ABON		TD_DT_001,
@ISST_PAGO		TD_VC_001  -- 'C' CON SALDO, 'S' SIN SALDO, 'T' TODOS
 
AS	

CREATE TABLE #TWFINA_BANC_Q02_1 
 ( CO_EMPR      varchar(3) NULL,
   CO_BANC	varchar(3) NULL,
   CO_TIPO_FINA	varchar(3) NULL,
   NU_FINA	varchar(20) NULL,
   FE_ABON	datetime NULL,
   FE_VENC	datetime NULL,
   CO_CLIE	varchar(20) NULL,
   TI_DOCU_BANC	varchar(3) NULL,
   NU_DOCU_BANC	varchar(20) NULL,
   FE_PAGO	datetime NULL,
   CO_MONE	varchar(3) NULL,
   FA_TIPO_CAMB	numeric(15,6) NULL,
   FA_CAMB_EXTR	numeric(15,6) NULL,
   IM_DOCU	numeric(16,4) DEFAULT 0,
   IM_DOCU_CONV	numeric(16,4) DEFAULT 0,
   CO_MONE_FINA	varchar(3) NULL,
   IM_FINA	numeric(16,4) DEFAULT 0,
   IM_PAGO_DOCU	numeric(16,4) DEFAULT 0,
   IM_PAGO_FINA	numeric(16,4) DEFAULT 0,
   TI_DETA	varchar(1) NULL,
   ST_FLAG	varchar(1) NULL)
  


DECLARE 

@VSCO_EMPR 	TD_VC_002,
@VSTI_CAMB	TD_VC_001,
@VSTI_ORIG	TD_VC_001,
@VSDE_ORDE	TD_VC_050,
@VSFE_ABON	TD_VC_010,
@VNIM_CXCB_CONV TD_NU_016_004,
@VNIM_PAGO_CONV TD_NU_016_004,
@VNFE_0001      TD_IN_001, 
@VSCA_WHER VARCHAR(600),
@VDTIME		DATETIME




SELECT @VSCA_WHER = REPLACE(@ISCA_WHER_0001+@ISCA_WHER_0002, "TCFINA_BANC", "T1")

SELECT 	@VSFE_ABON = Convert(Varchar(10), @IDFE_ABON, 103)

-- TIPOS DE DETALLE(TI_DETA = "1" AL "7")
--1.- DOCS DE CLIENTES EN FINANCIAMIENTO			
--2.- PAGOS BANCOS / CAJA

--SELECT @VDTIME = GETDATE()
--SELECT 'INICIO INSERTS', @VDTIME

--1.- DOCS DE CLIENTES EN FINANCIAMIENTO

  EXECUTE( "INSERT INTO #TWFINA_BANC_Q02_1 
  (CO_EMPR, CO_BANC, CO_TIPO_FINA, NU_FINA, FE_ABON, FE_VENC, TI_DOCU_BANC, NU_DOCU_BANC, CO_CLIE, 
   CO_MONE, FA_TIPO_CAMB, FA_CAMB_EXTR, IM_DOCU, IM_DOCU_CONV, CO_MONE_FINA, IM_FINA, TI_DETA)
  Select T1.CO_EMPR, T1.CO_BANC, T1.CO_TIPO_FINA, T1.NU_FINA, T1.FE_ABON, T2.FE_VENC, Isnull(T4.TI_DOCU_BANC, ''), 
  Isnull(T4.NU_DOCU_BANC, ''), Isnull(T4.CO_ENTI, ''), Isnull(T4.CO_MONE, ''), T1.FA_TIPO_CAMB, 
  T2.FA_CAMB_EXTR, Isnull(T4.IM_DOCU, 0), 
  Isnull( Case T4.CO_MONE When '" + @ISCO_MONE_NACI + "' Then T4.IM_DOCU / T1.FA_TIPO_CAMB
				When '" + @ISCO_MONE_EXTR + "' Then T4.IM_DOCU
				Else T4.IM_DOCU * T4.FA_CAMB_EXTR
  End, 0),
  T7.CO_MONE_CRED, T1.IM_FINA, '1'
  From  TCFINA_BANC T1, TMDOCU_PROV T2
  Left Outer Join TMDOCU_BANC T4
  On T1.CO_EMPR = T4.CO_EMPR
  And T1.CO_BANC = T4.CO_BANC  And T1.TI_DOCU_BANC = T4.TI_DOCU_BANC
  And T1.NU_DOCU_BANC = T4.NU_DOCU_BANC
  Inner Join  TTTIPO_FINA T5
  On T1.CO_TIPO_FINA = T5.CO_TIPO_FINA
  And T5.ST_DOCU_BANC = 'S'
  Inner Join TTTIFN_BANC T7
  On T1.CO_EMPR = T7.CO_EMPR 
  And T1.CO_BANC = T7.CO_BANC
  And T1.CO_TIPO_FINA = T7.CO_TIPO_FINA
  Inner Join  TTBANC_FINA T8
  On T1.CO_BANC = T8.CO_BANC
  " 
  + @VSCA_WHER + "
  And T2.CO_EMPR = T1.CO_EMPR
  And T2.CO_PROV = T8.CO_PROV
  And T2.CO_TIPO_DOCU = T5.CO_TIPO_DOCU
  And T2.NU_DOCU_PROV = T1.NU_FINA
  And T1.TI_SITU != 'ANU'
  And T1.FE_ABON <= Convert(Datetime, '" + @VSFE_ABON + "', 103)")

--2.- PAGOS BANCOS / CAJA
  EXECUTE("INSERT INTO #TWFINA_BANC_Q02_1 
  (CO_EMPR, CO_BANC, CO_TIPO_FINA, NU_FINA, 
   FE_PAGO, CO_MONE, FA_TIPO_CAMB, FA_CAMB_EXTR, IM_PAGO_DOCU, IM_PAGO_FINA, TI_DETA)
  Select T1.CO_EMPR, T1.CO_BANC, T1.CO_TIPO_FINA, T1.NU_FINA, 
  T3.FE_OPER, T5.CO_MONE, T3.FA_TIPO_CAMB, T2.FA_CAMB_EXTR, 
  ( PatIndex(T2.ST_CIER_DOCU, 'N') * T2.IM_CONV_DOCU +
    PatIndex(T2.ST_CIER_DOCU, 'S') * T2.IM_SALD_DOCU ), 
  (Select dbo.FN_TCFACT_CAMB_Q03(T5.CO_MONE, T7.CO_MONE_CRED, 
  ( PatIndex(T2.ST_CIER_DOCU, 'N') * T2.IM_CONV_DOCU +
    PatIndex(T2.ST_CIER_DOCU, 'S') * T2.IM_SALD_DOCU ), '" + @ISCO_MONE_NACI + "',
    '" + @ISCO_MONE_EXTR + "', T3.FA_TIPO_CAMB, T2.FA_CAMB_EXTR)), '2'
  From  #TWFINA_BANC_Q02_1 T1, TDMOVI_BANC T2, TCMOVI_BANC T3, TMCNTA_BANC T4, 
  TMDOCU_PROV T5, TTDOCU_CNTB T6, TTTIFN_BANC T7, TTBANC_FINA T8
  Where  T1.CO_EMPR = T5.CO_EMPR
  And	 T1.CO_BANC = T5.CO_BANC
  And 	 T1.CO_TIPO_FINA = T5.CO_TIPO_FINA
  And 	 T1.NU_FINA = T5.NU_DOCU_PROV

  And	 T1.CO_BANC = T8.CO_BANC
  And 	 T5.CO_PROV = T8.CO_PROV

  And    T2.CO_EMPR = T3.CO_EMPR  
  And    T2.CO_UNID_CONC = T3.CO_UNID_CONC
  And    T2.CO_BANC = T3.CO_BANC  
  And    T2.NU_CNTA_BANC  = T3.NU_CNTA_BANC  
  And    T2.AA_BNCO = T3.AA_BNCO
  And    T2.MM_BNCO = T3.MM_BNCO 
  And    T2.TI_MOVI_BANC  = T3.TI_MOVI_BANC 
  And    T2.NU_COMP_BANC = T3.NU_COMP_BANC
  And    T3.FE_OPER  <= Convert(Datetime, '" + @VSFE_ABON + "', 103)
  And    T3.TI_SITU != 'ANU' 
  And	 Rtrim(Isnull(T2.CO_CNTA_EMPR, '')) = ''

  And    T3.CO_EMPR = T4.CO_EMPR  
  And    T3.CO_BANC = T4.CO_BANC  
  And    T3.NU_CNTA_BANC  = T4.NU_CNTA_BANC

  AND	 T2.CO_EMPR = T5.CO_EMPR
  And    T2.TI_ENTI = '" + @ISTI_AUXI_PROV + "'
  AND 	 T2.TI_DOCU_ENTI = T5.CO_TIPO_DOCU
  AND 	 T2.NU_DOCU_ENTI = T5.NU_DOCU_PROV

  And 	 T1.CO_EMPR = T7.CO_EMPR 
  And 	 T1.CO_BANC = T7.CO_BANC
  And 	 T1.CO_TIPO_FINA = T7.CO_TIPO_FINA 
  And 	 T2.TI_DOCU_ENTI = T6.TI_DOCU")


/*
------------------------------------------------------------------
-----	CONVIERTO LOS IMPORTES A LA MONEDA DE PRESENTACION
------------------------------------------------------------------

IF @ISST_USUA = 'S'
  UPDATE #TWTCFINA_BANC_Q02_1
  SET IM_CXCB_CONV = (SELECT OFITESO.dbo.FN_TCFACT_CAMB_Q02(CO_MONE, @ISCO_MONE_PRES, FE_REPO, 
			IM_CXCB, T2.TI_CAMB, T2.TI_ORIG, 'S', T2.CO_MONE_DEFA, T2.CO_MONE_EXTR, @INFA_USUA)),
      IM_PAGO_CONV = (SELECT OFITESO.dbo.FN_TCFACT_CAMB_Q02(CO_MONE, @ISCO_MONE_PRES, FE_REPO, 
			IM_PAGO, T2.TI_CAMB, T2.TI_ORIG, 'S', T2.CO_MONE_DEFA, T2.CO_MONE_EXTR, @INFA_USUA))
  FROM #TWTCFINA_BANC_Q02_1 T1, TMPARA_TESO T2
  WHERE T1.CO_EMPR = T2.CO_EMPR
--  AND T1.ST_FLAG = 'S'
--  AND ROUND(T1.IM_CXCB, 2) != ROUND(T1.IM_PAGO, 2)
ELSE
  UPDATE #TWTCFINA_BANC_Q02_1
  SET IM_CXCB_CONV = (SELECT OFITESO.dbo.FN_TCFACT_CAMB_Q02(CO_MONE, @ISCO_MONE_PRES, FE_REPO, 
			IM_CXCB, T2.TI_CAMB, T2.TI_ORIG, 'S', T2.CO_MONE_DEFA, T2.CO_MONE_EXTR, T1.FA_TIPO_CAMB)),
      IM_PAGO_CONV = (SELECT OFITESO.dbo.FN_TCFACT_CAMB_Q02(CO_MONE, @ISCO_MONE_PRES, FE_REPO, 
			IM_PAGO, T2.TI_CAMB, T2.TI_ORIG, 'S', T2.CO_MONE_DEFA, T2.CO_MONE_EXTR, T1.FA_TIPO_CAMB))
  FROM #TWTCFINA_BANC_Q02_1 T1, TMPARA_TESO T2
  WHERE T1.CO_EMPR = T2.CO_EMPR
--  AND T1.ST_FLAG = 'S'
--  AND ROUND(T1.IM_CXCB, 2) != ROUND(T1.IM_PAGO, 2)

*/

-------------------------------------------------------------------------------
-----------   AGRUPO POR DOCUMENTO Y LO INSERTO EN LA TABLA TEMPORAL   ---------
--------------------------------------------------------------------------------

   	EXECUTE( "INSERT INTO #TWFINA_BANC_Q02_1 
  	(CO_EMPR, CO_BANC, CO_TIPO_FINA, NU_FINA, FE_ABON, FE_VENC, CO_CLIE, TI_DOCU_BANC, NU_DOCU_BANC,
  	CO_MONE, FE_PAGO, IM_DOCU, IM_DOCU_CONV, CO_MONE_FINA, IM_FINA, 
	IM_PAGO_DOCU, IM_PAGO_FINA, ST_FLAG)
	SELECT T1.CO_EMPR, T1.CO_BANC, T1.CO_TIPO_FINA, T1.NU_FINA, MAX(FE_ABON), MAX(FE_VENC), MAX(T1.CO_CLIE), 
	MAX(T1.TI_DOCU_BANC), MAX(T1.NU_DOCU_BANC), MAX(CO_MONE), MAX(FE_PAGO), MAX(ISNULL(IM_DOCU, 0)), 
	MAX(ISNULL(IM_DOCU_CONV, 0)), MAX(CO_MONE_FINA), MAX(ISNULL(IM_FINA, 0)), SUM(ISNULL(IM_PAGO_DOCU, 0)), 
	SUM(ISNULL(IM_PAGO_FINA, 0)), '1'
   	FROM 	#TWFINA_BANC_Q02_1 T1
	GROUP BY T1.CO_EMPR, T1.CO_BANC, T1.CO_TIPO_FINA, T1.NU_FINA")


	DELETE #TWFINA_BANC_Q02_1
	WHERE ST_FLAG IS NULL


	IF @ISST_PAGO = 'C'
	  DELETE #TWFINA_BANC_Q02_1
	  FROM #TWFINA_BANC_Q02_1 T1, (SELECT CO_EMPR, CO_BANC, CO_TIPO_FINA, NU_FINA
									FROM #TWFINA_BANC_Q02_1
									GROUP BY CO_EMPR, CO_BANC, CO_TIPO_FINA, NU_FINA
									HAVING SUM(IM_FINA) = SUM(IM_PAGO_DOCU) ) T2
	  WHERE T1.CO_EMPR = T2.CO_EMPR
	  AND T1.CO_BANC = T2.CO_BANC
	  AND T1.CO_TIPO_FINA = T2.CO_TIPO_FINA
	  AND T1.NU_FINA = T2.NU_FINA

	IF @ISST_PAGO = 'S'
	  DELETE #TWFINA_BANC_Q02_1
	  FROM #TWFINA_BANC_Q02_1 T1, (SELECT CO_EMPR, CO_BANC, CO_TIPO_FINA, NU_FINA
									FROM #TWFINA_BANC_Q02_1
									GROUP BY CO_EMPR, CO_BANC, CO_TIPO_FINA, NU_FINA
									HAVING SUM(IM_FINA) != SUM(IM_PAGO_DOCU) ) T2
	  WHERE T1.CO_EMPR = T2.CO_EMPR
	  AND T1.CO_BANC = T2.CO_BANC
	  AND T1.CO_TIPO_FINA = T2.CO_TIPO_FINA
	  AND T1.NU_FINA = T2.NU_FINA


	SELECT T1.CO_EMPR, T4.DE_NOMB, T1.CO_BANC, T3.DE_NOMB_CORT, T1.CO_TIPO_FINA, 
		T5.DE_TIPO_FINA, T2.CO_ENTI, T2.NO_AUXI, T1.TI_DOCU_BANC, T1.NU_DOCU_BANC, 
		T1.CO_MONE, T1.IM_DOCU, T1.IM_DOCU_CONV, T1.NU_FINA, CONVERT(VARCHAR(10), T1.FE_ABON, 103), 
		CONVERT(VARCHAR(10), T1.FE_VENC, 103), 
		CONVERT(VARCHAR(10), T1.FE_PAGO, 103), T1.IM_FINA, 
		CASE WHEN T1.IM_PAGO_FINA > T1.IM_FINA THEN T1.IM_FINA ELSE T1.IM_PAGO_FINA END, 
		T6.IM_SALD_INIC, T6.IM_LINE_CRED
	FROM #TWFINA_BANC_Q02_1 T1
	Left Outer Join TMDOCU_BANC T2
	On T1.CO_EMPR = T2.CO_EMPR
	AND T1.CO_BANC = T2.CO_BANC
	AND T1.TI_DOCU_BANC = T2.TI_DOCU_BANC
	AND T1.NU_DOCU_BANC = T2.NU_DOCU_BANC
	Inner Join TTBANC_FINA T3
	On T1.CO_BANC = T3.CO_BANC
	Inner Join TMEMPR T4
	On T1.CO_EMPR = T4.CO_EMPR
	Inner Join TTTIPO_FINA T5
	On T1.CO_TIPO_FINA = T5.CO_TIPO_FINA
	Inner Join TTTIFN_BANC T6
	On T1.CO_EMPR = T6.CO_EMPR
	AND T1.CO_BANC = T6.CO_BANC
	AND T1.CO_TIPO_FINA = T6.CO_TIPO_FINA 
	
	ORDER BY T1.CO_EMPR, T1.CO_BANC, T1.CO_TIPO_FINA, T1.NU_FINA

RETURN
/*------------------------- FIN ------------------------------ */


GO
